<?php
namespace Home\Controller;
use Think\Controller;
defined('IN_ECTOUCH') or die('Deny Access');
require_once('WxMoneyPay.class.php');
class RespondController extends Controller{

	//异步接受回调结果
  public function wxNotify()
  { 

      $response=$GLOBALS["HTTP_RAW_POST_DATA"]?$GLOBALS["HTTP_RAW_POST_DATA"]:$_POST;
       if(!isset($_POST['result_code']))
       {
         $result=WxMoneyPay::getNotifyFormXml($response);     
       }
       else
       {
        $data=WxMoneyPay::getNotifyFormArray($response); 
        $result=$data;
       }
        

       if($result['result_code']=="SUCCESS")
       {
          $openid=$result['openid'];
          $transaction_id=$result['transaction_id'];//微信订单号
          $out_trade_no = explode('O', $result['out_trade_no']);
          // $order_sn=$out_trade_no[0];
          $log_id = $out_trade_no[1]; // 订单号log_id
          


          D('Payment')->order_paid($log_id, 2);
          
          $data=array();
          $data['openid']=$openid;
          $data['transid']=$transaction_id;
          M('pay_log')->where("log_id='$log_id'")->save($data);


         $returndata['return_code'] = 'SUCCESS';
       }
       else if($result['return_code']=="SUCCESS")
       {
            $returndata['return_code'] = 'FAIL';
            $returndata['return_msg'] = '签名失败';
       }
       else
       {
            $returndata['return_code'] = 'FAIL';
            $returndata['return_msg'] = '无数据返回';
       }

       $xml=array_toXml($returndata);
       echo $xml;
       exit;
  }

  //支付宝 接受异步
   public function alipayNotifyUrl()
   {
      Vendor('Alipay.Notify');
      Vendor('Alipay.Corefunction');
      Vendor('Alipay.Rsafunction');

      $alipay_config=C('alipay_config');

     //计算得出通知验证结果
       $alipayNotify = new \AlipayNotify($alipay_config);
       $verify_result = $alipayNotify->verifyNotify();

       if($verify_result) {//验证成功

          //支付宝交易号
          $trade_no = $_POST['trade_no'];
          //交易状态
          $trade_status = $_POST['trade_status'];
          
          $out_trade_no = explode('O', $postdata['out_trade_no']);
                // $order_sn=$out_trade_no[0];
                 $log_id = $out_trade_no[1]; // 订单号log_id


            if($_POST['trade_status'] == 'TRADE_FINISHED') { //交易成功且结束，即不可再做任何操作。
            //判断该笔订单是否在商户网站中已经做过处理
              //如果没有做过处理，根据订单号（out_trade_no）在商户网站的订单系统中查到该笔订单的详细，并执行商户的业务程序
              //如果有做过处理，不执行商户的业务程序
                    D('Payment')->order_paid($log_id, 2);
                

            }
            else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {  //交易成功，且可对该交易做操作，如：多级分润、退款等。
            //判断该笔订单是否在商户网站中已经做过处理
              //如果没有做过处理，根据订单号（out_trade_no）在商户网站的订单系统中查到该笔订单的详细，并执行商户的业务程序
              //如果有做过处理，不执行商户的业务程序
                
            D('Payment')->order_paid($log_id, 2);
            }

        
                
          echo "success";   
          
          
        }
        else {
            //验证失败
            echo "fail";
        }

   }
   

}
?>

